/*
 *  Copyright (c) 2010 Mathew Hall.
 *  All rights reserved.
 * 
 *  Redistribution and use in source and binary forms, with or
 *  without modification, are permitted provided that the following conditions
 *  are met:
 * 
 *  Redistributions of source code must retain the above copyright
 *  notice, this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above
 *  copyright notice, this list of conditions and the following
 *  disclaimer in the documentation and/or other materials provided
 *  with the distribution.
 *  Neither the name of the University of Sheffield nor the names of its
 *  contributors may be used to endorse or promote products derived
 *  from this software without specific prior written permission.
 * 
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
 *  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
 *  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
 *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 *  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 *  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

package search.util

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

def filename = "/Users/mat/Dropbox/graphs/eurace.dot";

def file = new File(filename);

def text = file.getText();

def noChairs = text.split("\n").findAll{ line ->
    return !(line =~/<p>Chair:/);
};

def ttl = noChairs.inject("",{
    line,oldline -> line + "\n" +oldline;
    
});


def states = [:];

text.eachLine{
    line ->
    def m = line =~ /^\W*(\w+).*shape = rect]/
    if(m){
        //print m[0][1];
        states[m[0][1]] = true;

    }
    
}

ttl = (ttl =~ /(\w+).*shape = rect]\n/).replaceAll("");

//println(ttl);


states.keySet().each{
    state ->
    def m = (ttl =~ state+' -> ([^;]+)');
    if(m)
        states[state] = m[0][1];
}

//println(ttl);

states.each{label, replaceWith ->
        def m = (ttl =~ / -> $label( [.*];)?/);
        if(m)
            ttl = m.replaceAll(" -> $replaceWith [label=$label]");
        ttl = (ttl =~ /$label -> \w+( [.*])?;/).replaceAll('');
}



println (ttl);

def out = new File("/Users/mat/Dropbox/graphs/euracefiltered.dot");

out.write(ttl);
